home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 April / macformat-023.iso / Shareware City / Developers / inc-dec / source / lib / arg_utl.c next >
Encoding:
C/C++ Source or Header  |  1994-10-20  |  3.1 KB  |  131 lines  |  [TEXT/KAHL]

  1. /* ========================================
  2.  
  3.     arg_utl.c
  4.     
  5.     Copyright (c) 1993,1994 Newport Software Development
  6.     
  7.     You may distribute unmodified copies of this file for
  8.     noncommercial purposes.  You may use this file as a
  9.     reference when writing your own nShell(tm) commands.
  10.     
  11.     All other rights are reserved.
  12.     
  13.     Revisions:
  14.     
  15.     10/20/94    John Jensen        Dropped arg_to_int
  16.                                 Added arg_to_num
  17.                                 Changed error string in arg_to_str
  18.     
  19.    ======================================== */
  20.    
  21. #include "nshc.h"
  22.                     
  23. #include "str_utl.proto.h"
  24. #include "arg_utl.proto.h"
  25.  
  26. // ===== argument converson routines =====
  27.  
  28. // assuming the argv has been checked by nshc_is_numeric_operand
  29.         
  30. long arg_to_num(t_nshc_parms *nshc_parms, int arg)
  31. {
  32.     char    *arg_str;
  33.     Str255    string;
  34.     long    value;
  35.         
  36.     arg_str = &nshc_parms->arg_buf[nshc_parms->argv[arg]];
  37.  
  38.     pStrFromC( string, arg_str );
  39.  
  40.     StringToNum( string, &value );
  41.         
  42.     return( value );
  43. }
  44.  
  45. int arg_to_str( t_nshc_parms *nshc_parms, t_nshc_calls *nshc_calls, int arg, Str255 string )
  46. {
  47.     char    *app_name;
  48.     char    *arg_str;
  49.     int        result;
  50.     
  51.     result = NSHC_NO_ERR;
  52.     
  53.     arg_str = &nshc_parms->arg_buf[nshc_parms->argv[arg]];
  54.         
  55.     if ( cStrLen( arg_str ) > 255 ) {
  56.         app_name = &nshc_parms->arg_buf[nshc_parms->argv[0]];
  57.         nshc_calls->NSH_puts_err(app_name);
  58.         nshc_calls->NSH_putStr_err("\p: Name is too long = ");
  59.         nshc_calls->NSH_puts_err(arg_str);
  60.         nshc_calls->NSH_putchar_err('\r');
  61.         result = NSHC_ERR_PARMS;
  62.         }
  63.     else
  64.         pStrFromC( string, arg_str );
  65.             
  66.     return( result );
  67. }
  68.  
  69. int arg_fss_utl( t_nshc_parms *nshc_parms, t_nshc_calls *nshc_calls, int arg, FSSpec *spec )
  70. {
  71.     char    *app_name;
  72.     char    *arg_str;
  73.     int        result;
  74.     Str255    pathname;
  75.         
  76.     result = NSHC_ERR_PARMS;
  77.     
  78.     arg_str = &nshc_parms->arg_buf[nshc_parms->argv[arg]];
  79.         
  80.     if ( cStrLen( arg_str ) > 255 ) {
  81.         nshc_calls->NSH_puts_err(&nshc_parms->arg_buf[nshc_parms->argv[0]]);
  82.         nshc_calls->NSH_putStr_err("\p: Pathname is too long = ");
  83.         nshc_calls->NSH_puts_err(arg_str);
  84.         nshc_calls->NSH_putchar_err('\r');
  85.         }
  86.     else {
  87.         pStrFromC( pathname, arg_str );
  88.         if (!nshc_calls->NSH_path_expand( pathname ))
  89.             result = nshc_calls->NSH_path_to_FSSpec( pathname, spec );
  90.         }
  91.             
  92.     return( result );
  93. }
  94.  
  95. int arg_to_fss( t_nshc_parms *nshc_parms, t_nshc_calls *nshc_calls, int arg, FSSpec *spec )
  96. {
  97.     int        result;
  98.     
  99.     result = arg_fss_utl(nshc_parms, nshc_calls, arg, spec );
  100.     
  101.     if ( ( result == noErr ) || ( result == fnfErr ) )
  102.         result = NSHC_NO_ERR;
  103.                 
  104.     if (result) {
  105.         nshc_calls->NSH_puts_err(&nshc_parms->arg_buf[nshc_parms->argv[0]]);
  106.         nshc_calls->NSH_putStr_err("\p: Bad pathname = ");
  107.         nshc_calls->NSH_puts_err(&nshc_parms->arg_buf[nshc_parms->argv[arg]]);
  108.         nshc_calls->NSH_putchar_err('\r');
  109.         }
  110.         
  111.     return( result );
  112. }
  113.  
  114. int arg_to_real_fss( t_nshc_parms *nshc_parms, t_nshc_calls *nshc_calls, int arg, FSSpec *spec )
  115. {
  116.     int        result;
  117.     
  118.     result = arg_fss_utl(nshc_parms, nshc_calls, arg, spec );
  119.     
  120.     if (result) {
  121.         nshc_calls->NSH_puts_err(&nshc_parms->arg_buf[nshc_parms->argv[0]]);
  122.         nshc_calls->NSH_putStr_err("\p: Bad pathname = ");
  123.         nshc_calls->NSH_puts_err(&nshc_parms->arg_buf[nshc_parms->argv[arg]]);
  124.         nshc_calls->NSH_putchar_err('\r');
  125.         }
  126.         
  127.     return( result );
  128. }
  129.  
  130.  
  131.